Spring Data JPA এর মাধ্যমে REST API তৈরি

Java Technologies - স্প্রিং ওআরএম (Spring ORM) Spring ORM এবং REST API Integration |
47
47

Spring Data JPA হল Spring Framework-এর একটি অত্যন্ত শক্তিশালী মডিউল, যা JPA (Java Persistence API) ব্যবহার করে ডেটাবেস অপারেশন সহজ করে। Spring Data JPA, Spring Boot-এর সঙ্গে মিলে দ্রুত এবং কার্যকরভাবে RESTful API তৈরি করতে সাহায্য করে।

এখানে আমরা একটি সাধারণ Spring Data JPA অ্যাপ্লিকেশন তৈরি করব এবং একটি REST API তৈরি করব, যা ডেটাবেস থেকে তথ্য এনে ক্লায়েন্টকে রেসপন্স করবে।


Spring Data JPA ব্যবহার করে REST API তৈরি করার জন্য পদক্ষেপ

১. Spring Boot প্রজেক্ট তৈরি করা

Spring Boot প্রজেক্ট তৈরি করতে, Spring Initializr ব্যবহার করুন (https://start.spring.io/)। এখানে কিছু প্রাথমিক ডিপেন্ডেন্সি নির্বাচন করতে হবে:

  • Spring Web: REST API তৈরি করার জন্য
  • Spring Data JPA: ডেটাবেসের সঙ্গে সংযোগ স্থাপনের জন্য
  • H2 Database (বা অন্য কোনো ডাটাবেস): ডেটাবেস ব্যবহার করার জন্য (এখানে H2 ব্যবহার করা হবে)
  • Spring Boot DevTools: ডেভেলপমেন্টের জন্য সহজ ডিবাগিং

২. Maven ডিপেন্ডেন্সি যোগ করা

Spring Boot প্রজেক্টে ডিপেন্ডেন্সি যোগ করা যেটি আপনার pom.xml ফাইলে থাকবে।

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

৩. ডাটাবেস কনফিগারেশন

application.properties ফাইলে ডাটাবেস কনফিগারেশন সেট করতে হবে। এখানে H2 ডাটাবেসের কনফিগারেশন দেওয়া হলো:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true

এটি H2 ডাটাবেসে কাজ করবে এবং অ্যাপ্লিকেশন রান করার সময় ডাটাবেসের কনসোল দেখতে পারবেন।


৪. Entity ক্লাস তৈরি করা

JPA Entity ক্লাস তৈরি করতে হবে, যা ডাটাবেস টেবিলের সঙ্গে সম্পর্ক স্থাপন করবে। উদাহরণস্বরূপ, একটি Product Entity তৈরি করা:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;

    // Getters and Setters
}

এখানে @Entity অ্যানোটেশন ডেটাবেস টেবিলের জন্য Entity ক্লাসকে নির্দেশ করে এবং @Id হল Primary Key।


৫. Repository Interface তৈরি করা

Spring Data JPA এর সাহায্যে ডেটাবেস অপারেশন সহজ করতে JpaRepository ইন্টারফেস ব্যবহার করা হয়। এটি CRUD (Create, Read, Update, Delete) অপারেশনগুলো অ্যাক্সেস করতে সাহায্য করবে।

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
    // Custom query methods (if any) can be added here
}

এটি Product Entity এর জন্য ডেটাবেস অপারেশন সমর্থন করবে।


৬. Service Layer তৈরি করা

REST API-এর business logic সম্পাদন করতে একটি Service Layer তৈরি করা হয়। এখানে ProductService ক্লাসটি তৈরি করা হবে, যা ডেটাবেস থেকে তথ্য নিয়ে আসবে।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    public Product getProductById(Long id) {
        return productRepository.findById(id).orElse(null);
    }

    public Product createProduct(Product product) {
        return productRepository.save(product);
    }

    public Product updateProduct(Long id, Product product) {
        product.setId(id);
        return productRepository.save(product);
    }

    public void deleteProduct(Long id) {
        productRepository.deleteById(id);
    }
}

৭. Controller Layer তৈরি করা

RESTful API তৈরি করার জন্য Controller তৈরি করা হয়, যা HTTP রিকোয়েস্ট গ্রহণ করে এবং সঠিক সাড়া পাঠায়।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/products")
public class ProductController {

    @Autowired
    private ProductService productService;

    @GetMapping
    public List<Product> getAllProducts() {
        return productService.getAllProducts();
    }

    @GetMapping("/{id}")
    public Product getProductById(@PathVariable Long id) {
        return productService.getProductById(id);
    }

    @PostMapping
    public Product createProduct(@RequestBody Product product) {
        return productService.createProduct(product);
    }

    @PutMapping("/{id}")
    public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
        return productService.updateProduct(id, product);
    }

    @DeleteMapping("/{id}")
    public void deleteProduct(@PathVariable Long id) {
        productService.deleteProduct(id);
    }
}

এখানে @RestController অ্যানোটেশনটি API Controller-কে নির্দেশ করে এবং HTTP মেথডের মতো @GetMapping, @PostMapping, @PutMapping, @DeleteMapping ব্যবহার করা হয় রিকোয়েস্ট গুলোকে ম্যানেজ করতে।


৮. অ্যাপ্লিকেশন চালানো

Spring Boot অ্যাপ্লিকেশন চালানোর জন্য, @SpringBootApplication অ্যানোটেশন ব্যবহার করা হয়:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

এটি Spring Boot অ্যাপ্লিকেশন চালু করবে এবং আপনি API রিকোয়েস্ট পাঠাতে পারবেন।


উপসংহার

এখন, আপনি Spring Data JPA ব্যবহার করে একটি পূর্ণ REST API তৈরি করতে সক্ষম হয়েছেন, যেখানে:

  • Product Entity ডেটাবেস টেবিলের সঙ্গে সম্পর্কিত।
  • ProductRepository Spring Data JPA এর সাহায্যে CRUD অপারেশন পরিচালনা করে।
  • ProductService business logic সম্পাদন করে।
  • ProductController API endpoints পরিচালনা করে।

এই REST API অন্যান্য ক্লায়েন্ট (যেমন Angular, React বা Postman) দ্বারা ব্যবহার করা যেতে পারে ডেটা পেতে বা ডেটা পাঠাতে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion